#ifndef _BNCIMB_DOMAIN_PLAYER_H_
#define _BNCIMB_DOMAIN_PLAYER_H_
#include <string>
#include <vector>
#include <memory>
#include "BankAccount.h"
#include "BuyableTile.h"
#include "ColorType.h"
namespace BncImb {
namespace Domain {
using namespace std;
class Player {
public:
  const string& name() const;
  void name(const string& name);
  const BankAccount& account() const;
  ColorType color() const;
  bool isInJail() const;
  bool hasJailKey() const;
  int tablePosition() const;
  int playsInJail() const;
  void increasePlaysInJail();
  void makeTransaction(double value, const string& sourceAccountCode = "");
private:
  string mName;
  BankAccount mAccount;
  bool mIsInJail;
  bool mHasJailKey;
  ColorType mColor;
  int mPlaysInJail;
  vector<shared_ptr<BuyableTile>> mPossessions;
};
}
}

#endif